<?
	/* Se asegura que el archivo es incluido por el index */
		defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Proyecto_lst( $this );

	class Proyecto_lst extends Lst
	{
	function Proyecto_lst( &$oModule )
		{
			$this->Lst( $oModule );
			$this->aFields['bActual'] = getParam('bActual');
			$this->aFields['ncArea'] = getParam('ncArea');
		}
	function setLevel()
		{
			switch ( $this->getOptionView() )
			{
				case 'E':
				case 'C':
					$this->aShowColumns = array( 'Nombre', 'Estado' );
					break;
				case 'L':
					$this->aShowColumns = array( 'Nombre', 'Vto', 'Estado', 'Costo', 'Tiempo' );
					break;
			}
		}
	function initialize()
		{
			$this->oFiltro = $this->oModule->loadClass( 'Proyecto_frm' );
			$this->aFields = array_merge ( (array)$this->aFields,  (array)$this->oFiltro->getFieldArray() );
			$this->setTitle ( "Proyecto" );
			$this->setSummary( "Esta tabla contiene los Proyectos" );
			$this->addColumnAction ( 'Nombre', VER_PROYECTO,  'ncProyecto', 'cdProyecto' );
			$this->addColumn ( 'Vto', '', 'dVencimiento');
			$this->addColumn ( 'Estado', '' );
			$this->setColumnAction ( 'Estado', CONSULTAR_OBJETIVOS, 'ncProyecto' );
			$this->addColumn ( 'Costo', '' );
			$this->addColumn ( 'Tiempo', '' );
			$this->addColumn ( 'Responsable', '' );
			$this->setColumnAction ( 'Responsable', VER_PERSONA,  'ncPersona' );
			$this->addColumn ( 'Descripcion', 'cDescripcion' );
			//$this->addColumn ( 'Codigo', 'ncProyecto' );
			$this->oFecha = new DateObject();
			$this->oHoy = new DateObject();
			$this->oHoy->setToday();
		}
	function makeRowProperties ( $aRow )
		{
			if ( !$aRow['dFinalizado']  && $aRow['dVencimiento'] && $this->oHoy->dateDiff( "d",  $aRow['dVencimiento'] ) < 0   )  return " style='color: red;' ";
		}
	function makeColumn ( $aRow, $cField )
	{
		switch( $cField )
		{
			case 'KeyDay':
				$this->oFecha->setValue( $aRow['dVencimiento'] );
				$cReturn =  $this->oFecha->getValue();
				break;
			case 'Responsable':
					$cReturn = $this->aRow['cNombre'] . ' ' . $this->aRow['cApellido'];
					break;
			case 'Costo':
				list(  $aRow['fiCostoSubTareas'] , $aRow['nqTiempoSubTareas'] ) = $this->oDatabase->getArray("SELECT SUM( fiCosto) , SUM( nqTiempo) FROM  atTarea WHERE ncTareaPadre IS NULL AND ncProyecto = " . $aRow['ncProyecto']  );
				$cReturn =   $aRow['fiCostoSubTareas'];
				break;
			case 'Tiempo':
				$cReturn =   $aRow['nqTiempoSubTareas'];
				break;
			case 'Vto':
				if ( $aRow['dVencimiento'] == '' )
				{
					list( $dDesde, $dHasta ) = $this->oDatabase->getArray("SELECT MIN(dVencimiento), MAX(dVencimiento) FROM atTarea WHERE ncProyecto = " . $aRow['ncProyecto'] );
                    if ( $dDesde || $dHasta )
                    {
                        $this->oFecha->setValue( $dDesde );
                        $cReturn = $this->oFecha->getShortDescription(false);
                        $this->oFecha->setValue( $dHasta );
					    $cReturn .=  ' / ';
                        $cReturn .= $this->oFecha->getShortDescription(false);
                    }
				} else
				{
					$this->oFecha->setValue( $aRow['dVencimiento'] );
					$cReturn = $this->oFecha->getShortDescription(false);
				}
				break;
				default:
					return false;
				break;
		}
		return $cReturn;
	}
	function query()
		{
			// Arma el Query
				$cSql = "SELECT Pro.ncProyecto, Pro.cdProyecto, dVencimiento, dFinalizado, cDescripcion
												FROM atProyecto as Pro
											LEFT JOIN atPersona as Per
												ON Per.ncPersona = Pro.ncResponsable ";
				$cSql .= armarJoin ( " JOIN atOrganizacionPersona AS OAr ON OAr.ncOrganizacion = " . CODIGO_ORGANIZACION . " AND OAr.ncArea = $ncArea AND OAr.ncPersona = Pro.ncResponsable ", $ncArea);
			// Arma el Filtro de la Consulta				
				$this->oWhere->addArray ( $this->oFiltro->getFilterdArray(), 'Pro' );
				if ( $this->getOptionView() == 'C' ) list( $dDesde, $dHasta ) = $this->getDateRange();
				if ( $dDesde && $dHasta ) $this->oWhere->add( "Pro.dVencimiento", "$dDesde,$dHasta", "between");
				$this->oWhere->addNull ( "dFinalizado", $bActual );
				return $cSql . $this->oWhere->make();
		}
	function makeListActions()
		{
			$this->addListAction ( AGREGAR_PROYECTO, $cParametroRegistro, 'I' , VENTANA_SECUNDARIA);
		}
	function makeRowActions( $aRow )
		{
			$cParametroRegistro =  "ncProyecto=" . $aRow["ncProyecto"] ;
			$this->addRowAction ( MODIFICAR_PROYECTO, $cParametroRegistro, '' );
			$this->addRowAction ( ELIMINAR_PROYECTO, $cParametroRegistro);
			if ( $aRow['dFinalizado'] )
			{
				$this->addRowAction ( DESFINALIZAR_PROYECTO, $cParametroRegistro);
			} else
			{
				$this->addRowAction ( FINALIZAR_PROYECTO, $cParametroRegistro);
			}
			$this->addRowAction ( DUPLICAR_PROYECTO, $cParametroRegistro);
		}
	function makeComplex()
		{
			$oLst = $this->oModule->loadClass ( "objetivo_lst" );
			$oLst->aFields['ncProyecto'] = $this->aFields['ncProyecto'];
			$oLst->setTitle("Objetivos");
			$oLst->setNoPaging();
			$oLst->open();
			if ( $oLst->oRecordset->count() > 0 )
			{
				$oLst->makeTab();
			}
			$oLst = $this->oModule->setSubModule ( "agenda" );
			$oLst = $this->oModule->loadClass ( "tarea_lst" );
			$oLst->aFields['ncProyecto'] = $this->aFields['ncProyecto'];
			//$oLst->aFields['ncEstado'] = PROYECTO_PENDIENTE;
			$oLst->aFields['bSinSubtarea'] = 1;
			$oLst->setTitle("Tareas");
			$oLst->setNoPaging();
			$oLst->open();
			if ( $oLst->oRecordset->count() > 0 )
			{
				$oLst->makeTab();
			}
			/*
			$oLst = $this->oModule->loadClass ( "proyecto_contacto_lst" );
			$oLst->aFields['ncProyecto'] = $this->aFields['ncProyecto'];
			$oLst->setTitle("Contactos");
			$oLst->setNoPaging();
			$oLst->open();
			if ( $oLst->oRecordset->count() > 0 )
			{
				$oLst->makeTab();
			}
			*/
		}
	}
?>
